package com.jio.util;

import com.jio.javabean.User;

import mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.util.Date;

public class UserTest {
    SqlSession session;
    UserMapper mapper;
    @Before
    public void a() {
        //1、创建SqlSessionFactory对象，也是单例模式的
        SqlSessionFactory factory = MyBatisUtil.getSqlSessionFactory();
        //2、创建SqlSession对象 true 自动提交事务 不写也没事 因为默认在sqlsession关闭时提交事务
        session = factory.openSession(true);
        //3、调用session的方法namespace的名字.id
        mapper = session.getMapper(UserMapper.class);

    }

    @After
    public void b() {
        //5、关闭资源
        session.close();
    }
    //缓存 mybatis默认开启一级缓存 存储在会话中
    //同一个session查询的结果会进行保存 如果再次查询钱没有进行过修改操作 将之前查询的结果直接返回
    //减少sql的执行次数
    @Test
    public void selectAll(){
        mapper.selectAll();
        System.out.println(11111);
        mapper.selectAll();
        System.out.println(11111);
        mapper.selectAll();
        System.out.println(11111);
    }
    @Test
    public void selectAll1(){
        mapper.selectAll();
        System.out.println(11111);
        mapper.selectAll();
        System.out.println(11111);
        mapper.selectAll();
        System.out.println(11111);
    }
    @Test
    public void insertUser(){
         User u=new User("jk2-1",200,new Date());
         mapper.insertUser(u);
         //主键自增 有些需求需要在添加数据后返回主键
        //如何在使用mysql添加数据中 获取对应的自增主键
        //可以借助mybatis实现  让mybatis获取添加数据行的id然后存入参数对象
        //这样在执行完添加方法后 作为参数的对象中 就会存储自增id
        System.out.println(u);
    }

    @Test
    public void insertUser1(){
        User u=new User("jk2-2",200,new Date());
        mapper.insertUser1(u);
        System.out.println(u);
    }

    @Test
    public void insertUser2(){
        User u=new User("jk2-3",200,new Date());
        mapper.insertUser2(u);
        System.out.println(u);
    }
}